Software Defined Networking (SDN) is an approach to computer networking that employs a split architecture network in which the forwarding plane (or data plane) is decoupled from the control plane. The use of a split architecture network simplifies the network devices (e.g., switches) implementing the forwarding plane by shifting the intelligence of the network into one or more controllers that oversee the switches. SDN facilitates rapid and open innovation at the network layer by providing a programmable network infrastructure.
OpenFlow is a protocol that enables controllers and switches in an SDN network to communicate with each other. OpenFlow enables dynamic programming of flow control policies in the network. An OpenFlow switch includes a programmable packet processing pipeline (sometimes referred to as the OpenFlow pipeline). The OpenFlow pipeline includes one or more flow tables, where each flow table includes one or more flow entries. The flow tables of an OpenFlow pipeline are sequentially numbered, starting from zero. Pipeline processing starts at the first flow table (e.g., flow table 0). When processed by a flow table, a packet is matched against the flow entries of the flow table to select a flow entry. If a flow entry is found, the instruction set included in that flow entry is executed. These instructions may explicitly direct the packet to another (higher numbered) flow table (e.g., using the Goto-Table instruction). Typically, a packet can only be directed to a flow table having a table number that is greater than the table number of the current flow table. In other words, pipeline processing can only go forwards and not backwards.
Although the current OpenFlow specification does not support going backwards in the pipeline (e.g., from flow table having a higher number to a flow table having a lower number), various extensions are available that allow pipeline processing to go backwards in the pipeline (e.g., sometimes referred to as “resubmit” extensions). The ability to go backwards in the pipeline can potentially cause data plane loops within the OpenFlow switch. Data plane loops can be hazardous for an SDN network since they can consume a large amount of processing resources.